//
//  YSHelp.h
//  writemall
//
//  Created by mac on 2021/8/3.
//  Copyright © 2021 p.write.mall. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "XSButton.h"
NS_ASSUME_NONNULL_BEGIN




@interface YSHelp : NSObject



/** 设置Button的文字和文字颜色*/
+ (void)setButton:(UIButton *)button text:(NSString *)text textColor:(UIColor *)color font:(UIFont *)font;
/** 设置label的文字大小颜色和内容*/
+ (void)setLabel:(UILabel *)label text:(NSString *)text textColor:(UIColor *)color font:(UIFont *)font;


/**  快捷获取View*/
+ (UIView *)getViewSuperView:(id)superView rect:(CGRect)rect;

/**  快捷获取button*/
+ (XSButton *)getButtonSuperView:(id)superView rect:(CGRect)rect text:(NSString *)text textColor:(UIColor *)color font:(UIFont *)font;

/**  快捷获取label*/
+ (UILabel *)getLabelSuperView:(id)superView rect:(CGRect)rect text:(NSString *)text textColor:(UIColor *)color font:(UIFont *)font;

/**  快捷获取imageview*/
+ (UIImageView *)getImageViewSuperView:(id)superView rect:(CGRect)rect image:(UIImage *)image;


/**  设置label 的行间距  这里要注意系统间距差问题*/
+ (void)setLineSpacingWithLabel:(UILabel *)label text:(NSString*)text lineSpacing:(CGFloat)lineSpacing;

/**  计算有行间距的label的高度  这里也要注意系统间距差问题*/
+ (CGFloat)heightOfText:(NSString*)text heightWithFont:(UIFont *)font width:(CGFloat)width lineSpacing:(CGFloat)lineSpacing;



/**字符串文字的长度 */
+(CGFloat)widthOfString:(NSString *)string font:(UIFont*)font height:(CGFloat)height;

/**字符串文字的高度 */
+(CGFloat)heightOfString:(NSString *)string font:(UIFont*)font width:(CGFloat)width;

/**  计算富文本文字长度*/
+ (CGFloat)widthOfAtrributeString:(NSMutableAttributedString *)string  height:(CGFloat)height;

/**  计算富文本文字高度*/
+ (CGFloat)heightOfAtrributeString:(NSMutableAttributedString *)string  width:(CGFloat)width;



/**  根据时间格式来转化dateString 普通格式 yyyyMMdd HHmmss*/
+ (NSString *)formateDate:(NSString *)dateString dateFormatterString:(NSString *)formatterString;

/**比较时间 (与当前时间相比) 返回朋友圈类型的时间显示*/
+ (NSString *)compareTime:(NSString *)dateString;

/**计算两点距离 */
+ (CGFloat)getDistanceWithFirstln:(double)firstln andFirstlt:(double)firstlt andSecondln:(double)secondln andSecondlt:(double)secondlt;

/** 获取当前正在显示的ViewConrtroller*/
+ (UIViewController *)getCurrentVC;

/**获取当前view所在试图控制器 */
+ (UIViewController *)viewGetViewController:(UIView *)aView;

/** 根据index获取当前年月日时分秒*/
+ (NSString *)getNowDateWithDateIndexAt:(NSInteger)dateNum;

/** 获取当前时间(时分秒格式)*/
+ (NSString *)getNowDate;


/** 获取当前时间(可选格式)*/
+ (NSString *)getNowDateWithType:(NSInteger)type;

/** 判断字符串是否为空 返回YES表示不为空  NO 为空*/
+ (BOOL)judgeStringNull:(NSString *)string;

/**  转换空字符串为 @"" 格式*/
+ (NSString *)formatNullString:(NSString *)string;


/** 正则判断手机号格式*/
+ (BOOL)valiMobile:(NSString *)mobile;


/** 比较两个时间 后比前 返回值1大 0相等  -1小  type 6最大--(1-6 对应 年月日时分秒）  1最小 年*/
+ (NSInteger)compareDate:(NSString*)dateOne withDate:(NSString*)dateTwo formatType:(NSInteger)timeType;

/** 处理图片防止旋转90度*/
+ (UIImage *)solveImg:(UIImage *)image;

/** 将数组元素排序  YES为升序 */
+ (void)rankArray:(NSMutableArray *)muArr littleToBig:(BOOL)big;



/**  计算中英文混合字符的长度  中文-2字符  数字英文-1字符*/
+ (NSInteger)getStringLength:(NSString *)strTemp;




/**  字符转UFT8*/
+ (NSString *)UTF8StringWithString:(NSString *)string;

/**  UTF8转字符*/
+ (NSString *)stringWithUTF8String:(NSString *)UTF8String;




/**  获取label的行数（数组长度即为行数 每个元素为每行显示的内容）*/
+ (NSArray *)getLinesArrayOfStringInLabel:(UILabel *)label;



/**  获取一个在总字符串中设备某段字符的富文本格式*/
+ (NSMutableAttributedString *)getAttrStrWithAllStr:(NSString *)allStr  attrStr:(NSString *)attrStr font:(UIFont *)font  color:(UIColor *)color;


#pragma mark - 输入中文
/*
 ** 输入中文
 */
+ (BOOL) deptNameInputShouldChineseWithstring:(NSString *)inputString;

#pragma mark - 判断全数字：
/*
 ** 判断全数字：
 */
+ (BOOL) isAllNumberWithstring:(NSString *)inputString;

#pragma mark - 判断全字母：
/*
 ** 判断全字母：
 */
+ (BOOL) deptPassInputShouldAlphaWithstring:(NSString *)inputString;

#pragma mark - 判断仅输入字母或数字：
/*
 ** 判断仅输入字母或数字：
 */
+ (BOOL) deptIdInputShouldAlphaNumWithstring:(NSString *)inputString;

//*  判断用户输入的密码是否符合规范，符合规范的密码要求：
//   1. 长度大于8位
//   2. 密码中必须同时包含数字和字母
+(BOOL)isPassWordLegal:(NSString *)pass;

//*  判断用户输入的密码是否符合规范，符合规范的密码要求：
//   1. 长度大于6位
//   2. 密码中必须同时包含数字和字母
+(BOOL)isPass6_18WordLegal:(NSString *)pass;

+(UIImage *)imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size;

#pragma mark - 校验是否是图片
//原理就是检查文件的buffer，从头部找到类型相关的字段，然后和iOS支持的UTI类型进行比较，进而确定是否为图片类型。这个思路可以扩展到所有文件类型的检测
+ (BOOL)isImageSource:(NSURL*)URL;

+ (BOOL)isUrlAddress:(NSString*)url;

#pragma mark 简单验证身份证
+ (BOOL)simpleIDCardVerification:(NSString *)string;
#pragma mark 精确验证15或18位身份证
+ (BOOL)accurateIDCardWithFifteenOrEighteen:(NSString *)string;
#pragma mark 精确验证18位身份证
+ (BOOL) accurateIDCardWithEighteen:(NSString *)string;


/**
 *  doc文档转换html方法
 * fileData   从本地读取的doc文档数据流
 * lastFileNamestr doc文档名不包含后缀
 *
 *
 **/
#pragma mark 解析docx 或者 doc 文档数据
+ (void)getHtmlDataWith:(NSData *)fileData withFileName:(NSString *)lastFileNamestr succeed:(void (^)(id data,NSDictionary *errord))resultbk;
/**
 *  调用doc文档转换html 方法后进行解压缩
 * dictData   调用doc文档转换html方法后返回的数据
 * filePathStr  原始doc文档路径
 *
 *
 **/
+ (void)serverWithDictData:(NSDictionary *)dictData withFilePath:(NSString *)filePathStr succeed:(void (^)(id data,NSDictionary *errord))resultbk;


+ (void)wqWriteData:(NSString *)contentString withFileName:(NSString *)fNameStr;

// 设置缓存数据，并设置1天后过期
+ (void)setwqUniCacheData:(id)data;
 
// 获取缓存数据
+ (id)getwqUniCacheData;

+ (void)wqWriteData:(NSString *)contentString withFileName:(NSString *)fNameStr isOpenLog:(BOOL)isOpenLg;

#pragma mark - 获取文件名不包含  .后缀
/**
 * 传入@"path/to/your/file.txt";
 *  返回 file
 **/
+ (NSString *)getUrlStringFileName:(NSString *)filePath;

#pragma mark - 替换文件名中的特殊字符为_ 中文也会被替换
+ (NSString *)wqUniReplaceInvalidCharacters:(NSString *)originalFileName;

#pragma mark - 替换文件名中的特殊字符为_ 中文不会被替换(.也会被替换)
+ (NSString *)wqUniReplaceInvalidCharactersNotContainChinese:(NSString *)originalFileName;

#pragma mark 把HEIC|HEIF图片转成PNG图片
+(NSData *)convertHEICImageToPNG:(UIImage *)image;

#pragma mark 把旋转的图片转成到竖屏视图
//按照UIImageOrientation的定义，利用矩阵自定义实现对应的变换；
+(UIImage *)wqUniTransformImage:(UIImage *)aImage;

// 获取渐变图片
+ (UIImage *)xsCreateShadowImage;

+ (UIImage *)imageFromView:(UIView *)view;


///**
// *  返回写入数据的路径
// */
//+ (NSString *)xsWriteData:(NSData *)fData withFileName:(NSString *)fileNameStr;
//
///**
// * 并返回公共目录
// */
//#pragma mark 移动文件到uniapp公共目录
//+ (NSString *)xsMoveVedioToPublickDirWithOriginalString:(NSString *)originalStr;


/**
 * 并返回公共目录
 */
#pragma mark 移动文件到uniapp公共目录
+ (NSString *)xsMoveVedioToPublickDirWithOriginalString:(NSString *)originalStr;
/**
 * 传入 文件数据fData   跟文件路径fileNameStr
 *  返回写入数据的路径
 */
+ (NSString *)bossIpWriteImageData:(NSData *)fData withFileName:(NSString *)fileNameStr;

/**
 * 传入 视频文件数据fData   跟视频文件路径
 *  返回写入数据到bossip公共目录的路径
 */
+ (NSString *)bossIpWriteVideoData:(NSData *)fData withVideoFilePath:(NSString *)videoFilePathStr;

// 获取图片被压缩后的实际大小
+ (CGSize)bossIPGetImageCompressedSizeWithImageView:(UIImageView *)imageView;
@end


NS_ASSUME_NONNULL_END
